package cn.yunhe.dao.impl;

import cn.yunhe.dao.IUserDao;
import cn.yunhe.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import javax.sql.DataSource;
import java.util.List;

/**
 * 如果想要使用Spring提供的JdbcTemplate对象，需要数据层实现类继承JdbcDaoSupport
 * public final void setDataSource(DataSource dataSource) {
 *      this.jdbcTemplate == null说明是第一次创建jdbcTemplate对象
 *      dataSource != this.jdbcTemplate.getDataSource()多次创建，但是数据源发生了改变
 *      （前提：Spring的对象创建于管理默认是单例模式）
 * 		if (this.jdbcTemplate == null || dataSource != this.jdbcTemplate.getDataSource()) {
 * 			this.jdbcTemplate = createJdbcTemplate(dataSource);
 * 			initTemplateConfig();
 *                }* 	}
 */
@Repository
public class UserDaoImpl extends JdbcDaoSupport implements IUserDao {

//    @Resource(name = "dataSource")
    @Autowired
    public void setDataSource1(DataSource data){
        super.setDataSource(data);
    }

    public void queryUserById(int id) {
        //连接数据库，执行sql，返回查询到的结果
        JdbcTemplate jdbcTemplate = getJdbcTemplate();
        List<User> userList = jdbcTemplate.query("select * from user where id="+id, new BeanPropertyRowMapper<User>(User.class));
        System.out.println(userList);
    }
}

